package com.example.layoutinflater;


import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {
	final String LOG_TAG = "aaaa";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		    int a[]={1,2,3,4,5,6,7,8,9,10};
		    
	        LayoutInflater ltInflater = getLayoutInflater();
	        View view = ltInflater.inflate(R.layout.text, null, false);
	        LayoutParams lp = view.getLayoutParams();
	       
	        Log.d(LOG_TAG, "Class of view: " + view.getClass().toString());
	        Log.d(LOG_TAG, "LayoutParams of view is null: " + (lp == null));
	        Log.d(LOG_TAG, "Text of view: " + ((TextView) view).getText());
	        ListView lv = (ListView) findViewById(R.id.listView1);
	        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1);
	        lv.setAdapter(adapter);
	        String res="0000000000";
	        String temp="";
	        String checkchar;
	        int i=3;
	        int key=4;
	        int position=1;
	        
	        switch(key)
	        {
	        case R.id.del:
	       temp=AddLeft(temp,"0");
	       int counter=1;
	       if(temp.length()==1)
       	{
       		// Если длина нулевая восстанавливаем начальное значение
       		// и пытаемся добавить нули слева 
       		temp=res;
       		while(counter<10)
       		{
       			temp=AddLeft(temp,"0");
       			if(temp.length()==1)
       			{
       				counter++;
       			}
       			else
       			{
       				break;
       			}
       		}
       	}
       	else
       		{
       		res=temp;
       		}
	       
	        }
	        
	        
	        
	     if(key==i){
	        int counter=1;
	        checkchar=String.valueOf(i);
	        	temp=res;
	        if(position>1){
	        	// Если позиция ненулевая пытаемся добавить символ с текущей позиции
	        	temp=AddPosition(temp,checkchar,position);
	        	if(temp.length()!=1 )
	        		res=temp; // Если такой таймкод возможен считаем что результат правильный
	        	else 
	        		position--; // иначе переходим на следующую позицию
	        	
	        }
	        else{
	        // Добавляем введенный символ справа и проверяем на реальность таймкода
	        	temp=AddRight(temp,checkchar);
	        	if(temp.length()==1)
	        	{
	        		// Если такого таймкода не бывает восстанавливаем начальное значение
	        		// и пытаемся добавить нули справа 
	        		temp=res;
	        		while(counter<10)
	        		{
	        			temp=AddRight(temp,"0");
	        			if(temp.length()==1)
	        			{
	        				counter++;
	        			}
	        			else
	        			{
	        				// Сохраняем текущую позицию
	        				position=counter;
	        				break;
	        			}
	        		}
	        	}
	        	// Если такой таймкод бывает сохраняем текущий результат и текущую позицию
	        	else
	        		{
	        		res=temp;
	        		position++;
	        		}
	        	}
	        }
	        
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
	public String AddLeft(String tm,String chars) {
		String temps;
		temps=chars+tm;
		if(temps.length()!=10 || chars.length()!=2)
		return "";
		temps=temps.substring(0, temps.length()-1);
		if(Check(temps))
		return "";
		else return temps; 
			
	}
	public String AddRight(String tm,String chars){
		String temps;
		temps=tm+chars;
		if(temps.length()!=10 || chars.length()!=2)
		return "";
		temps=temps.substring(1, temps.length());
		if(Check(temps))
		return "";
		else return temps; 
				
	}
	public boolean Check(String Timecode)
	{
		if(TimecodeToFrames(Timecode)==-1)
			return false;
		else return true;
	}
	public int TimecodeToFrames(String tm)
	{
		int ffmax=25;
		int ff,ss,mm,hh,dd;
		ff=ss=mm=hh=dd=0;
		ff=Integer.valueOf(tm.substring(0, 2));
		ss=Integer.valueOf(tm.substring(2, 4));
		mm=Integer.valueOf(tm.substring(4, 6));
		hh=Integer.valueOf(tm.substring(6, 8));
		dd=Integer.valueOf(tm.substring(8, 10));
		if((dd>31 )|| (hh >24) || (mm>60) || (ss>60) || (ff>ffmax))	
			return -1;
		else return dd*24*60*60*ffmax+hh*60*60*ffmax+mm*60*ffmax+mm*ffmax+ff;
	}
 public String AddPosition(String tm,String chars,int Position)
 {
	 String temp;
	 if((Position<=0 && Position >10) || (tm.length()!=10) || (chars.length()!=2))
		 return "";
	 if(Position==1)
	 temp=tm.substring(0, 9)+chars;
	 else 
	temp=tm.substring(0, 10-Position)+chars+tm.substring(Position, 10);
	 if(temp.length()!=10)
		 return "";
	else if(Check(temp)) 
		return temp;
	else return "";
 }
}
